#ifndef SEVER_H
#define SEVER_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/select.h>
#include <arpa/inet.h>
#include <malloc.h>
#include <sys/socket.h>
#include <pthread.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
// 数据库结构体
typedef struct queryNode
{
    char **ppResult; // 指向字符串数组的指针，每一个元素是一个字符串
    int row;         // 行
    int col;         // 列
} QN;

// 用户信息结构体
typedef struct Register
{
    char account[128];  // 账号
    char name[128];     // 用户名
    char password[128]; // 密码
    char phone[128];    // 电话号码
} RG;
// 好友列表结构体
typedef struct Friend
{
    char name[128];
} FD;
typedef struct add_friend
{
    char friend_name[128];
    char self_name[128];
} ADD_FRI;

typedef struct singleChat
{
    char destName[128];
    char selfName[128];
    char text[700];
} SIG_CHAT;

typedef struct message_node // 想想成一艘大轮船，专门运送数据，且自带数据类型
{
    short type;
    /*
     消息的类型：1.注册 2.登录 3.找回密码 4.添加好友 5.约战好友 6.私聊 7.世界频道交流 8.查看排行榜 9.查看个人信息 10.删除好友
     11.修改密码 12.账号注销 13.
     */
    char buf[1022]; // 定义一个足够大的仓库，存放各种消息的数据
} MSG;

typedef struct loginInfo
{
    char name[128];
    int fd;
    int score;
} LOGIN_INFO;

typedef struct Delete_acc
{
    char account[128];
    char password[128];
} DA;
typedef struct challenge
{
    char challenger[128];
    char opponent[128];
} CHALLENGE;

typedef struct
{
    int fd;
    char account[255];
    struct sockaddr_in addr;
} Client;

typedef struct
{
    int player1_fd;
    int player2_fd;
    int secret_number;
    int player_turn; // 1 or 2 to indicate whose turn it is
} GameSession;

#endif